<%
'--------------------------------------------------------------------------
'	ADO CONSTANTS USED:
'--------------------------------------------------------------------------
'******	Const adExecuteNoRecords = 
Class Stat
	Dim aReport				' contiene dati
	Private iNumFields 		' numero colonne del report
	Private sStyle			' nome della classe css
	Private bLoaded			' settato a true quando viene trovato almeno un record
	Private nMonth_i, nYear_i
		
	Public Property Get DataArray()
		DataArray = aReport
	End Property

	Public Property Let Style(inputSytle)
		sStyle = inputSytle ' al momento non usato
	End Property

'--------------------------------------------------------------------------
'	Costruttore
'--------------------------------------------------------------------------
Private Sub Class_Initialize()
  'corpo del metodo
  iNumFields = 2
End Sub

'--------------------------------------------------------------------------
'	Distruttore
'--------------------------------------------------------------------------
Private Sub Class_Terminate()
  'corpo del metodo
End Sub

'--------------------------------------------------------------------------
'	LoadDB() Esegue query e carica dati del report
'--------------------------------------------------------------------------
	Public Sub LoadDB(nMonth,nYear)
	
	Dim sBeginDate, sEndDate

'	salva parametri in variabili private che verranno utilizzate nella stampa
'	del report	
	nMonth_i = nMonth
	nYear_i = nYear
	
	' primo e ultimo giorno mese/anno corrente		
	sBeginDate = CutoffDate( 1, nMonth, nYear, "begin" )  
	sEndDate = CutoffDate( 2, nMonth, nYear, "end" )  

	Call MakeConn(objConn,DATABASE)
	Call PrepareQuery(objConn, "QuerySpese01")
	
	objCmd.Parameters.Append _
					objCmd.CreateParameter  ("startdate",adVarChar, adParamInput ,10)
	objCmd.Parameters.Append _ 
				objCmd.CreateParameter    ("enddate",adVarChar, adParamInput ,10)
	objCmd.Parameters.Append  _
				objCmd.CreateParameter ("persona",adInteger, adParamInput )
	
	objCmd("startdate") = Month(sBeginDate) & "-" & Day(sBeginDate) & "-" &  Year (sBeginDate)
	
	objCmd("enddate") =  Month(sEndDate) & "-" &  Day(sEndDate)& "-" &  Year (sEndDate)	
	
	objCmd("persona") =  cint( Session("persons_id") )

	bLoaded = false				' record trovati
	Set objRS = objCmd.Execute 
		
	if objRs.EOF = false then		
		bLoaded = true				
'		carica record in tabella 
		aReport = objRs.getrows            						
		destroy(objRs) 
		destroy(objConn) 
	End if	
	
	End Sub 

'--------------------------------------------------------------------------
'	StampaTabella() Stampa tabella con i dati
'--------------------------------------------------------------------------
	Public Sub StampaTabella()
	
	Dim i, f
	Dim tmpSub1, tmpSub2
	Dim  tmpKey1, tmpKey2, tmpGenTot
	
	' iNumFields numero di campi non chiave
	' I primi due campi dell'array sono le chiavi
	'  Il campo da sommare si trova all'indice 2 + iNumFields

'	se non sono stati trovati record esce dalla procedura
	if bLoaded = false then
		Exit Sub
	End if

	response.write("<table class=TR-TabellaReport>")

'	inizializza sottototali e varaibili di appoggio
	tmpSub1 =  0
	tmpSub2 = 0			
	tmpKey1 =  ""
	tmpKey2 = ""
	tmpGenTot = 0
		  
' cicla sui record estratti
	For i=0 to Ubound(aReport, 2) 
			
'		response.write("<tr>")						
'		se è il primo record inizializza variabile di appoggio
		If  tmpKey1 = "" then
'			scrive nuova riga
			response.write("<th colspan=2 class=TR-titolo>" & "Spese " & nMonth_i & " " & nYear_i &  "</th>") 
			tmpKey1 = aReport(0,i) 
		End if

'		se è il primo record inizializza variabile di appoggio
		If  tmpKey2 = "" then
			tmpKey2 = aReport(1,i) 
		End if
					
'		se è cambiata la chiave primaria o secondaria stampa sottototale 2
		If  tmpKey2 <> aReport(1,i)  or  tmpKey1 <> aReport(0,i) Then
'			scrive sottototale
			call scrivi_sottototale2(tmpSub2, iNumFields + 2,tmpKey2) 							
			tmpSub2= 0
		End if
					
'		se è cambiata la chiave primaria stampa sottototale 1
		If  tmpKey1 <> aReport(0,i) Then
'			scrive sottototale			
			call scrivi_sottototale( tmpSub1, iNumFields + 2, "Totale") 			
'			scrive nuova riga
			call scrivi_riga( aReport(0,i), iNumFields + 2) 
			tmpSub1= 0
		End if
		
		response.write("<tr>")

'		stampa i campi non chiave					
		response.write("<td class=TR-riga>"   & aReport(2,i) & "  " & aReport(3,i) &  "</td>" )

'		le cifre sono allineate a destra
		response.write("<td class=TR-importo>"   & FormatNumber( aReport(4,i),2, false) &  "</td>" )

'		fine la  riga
		response.write("</tr>")

'		aggiorna sottototali			
		tmpSub1= tmpSub1 + aReport( 2 + iNumFields ,i)
		tmpSub2= tmpSub2 + aReport( 2 + iNumFields ,i)
		tmpGenTot = tmpGenTot + aReport( 2 + iNumFields ,i)
			
		tmpKey1 = aReport(0,i) 	
		tmpKey2 = aReport(1,i) 
			
		Next ' ciclo sui giorni							

'		scrive gli ultimi due sottototali
		call scrivi_sottototale2(tmpSub2, iNumFields + 2, tmpKey2) 			
		call scrivi_sottototale( tmpSub1, iNumFields + 2, "Totale " ) 

'/*		response.Write("<tr> <td colspan=4>&nbsp;</td> </tr>")		
'		call scrivi_sottototale(tmpGenTot, iNumFields + 2, "Totale Generale:")

		response.Write("</table>")	

	End Sub
	
'--------------------------------------------------------------------------
'	scrivi_riga()  
'--------------------------------------------------------------------------
	Private Sub scrivi_riga( strMsg, colonne)
'		response.write("<tr><td colspan="  & colonne & ">  &nbsp; </td></tr>")	
		response.write("<tr><th colspan="  & colonne & ">"  &  strMsg & "</th></tr>")	
	End Sub

'--------------------------------------------------------------------------
'	scrivi_sottototale()  
'--------------------------------------------------------------------------	
	Private Sub scrivi_sottototale( strMsg, colonne, messaggio)
		response.write("<tr><td class=TR-riga>" & messaggio & "</td>")				
		response.write("<td class=TR-importo>"  &  FormatNumber(strMsg, 2, false) & "</td></tr>")			
	End Sub

'--------------------------------------------------------------------------
'	scrivi_sottototale2()  
'--------------------------------------------------------------------------	
	Private Sub scrivi_sottototale2( strMsg, colonne, key2)
	dim i
		if key2 = false then
			response.write("<tr><td class=TR-totale>Pagamento personale</td>")	
		else
			response.write("<tr><td class=TR-totale>Pagamento carta aziendale</td>")	
		end if	
		
		response.write("<td class=TR-importoTotale>"  &  FormatNumber(strMsg,2, false) & "</td></tr>")	
		
	End Sub

End Class
%>

